#define _CRT_SECURE_NO_WARNINGS 1

class Solution {
public:
    int findUnsortedSubarray(vector<int>& nums) {
        int n = nums.size();
        int left = -1, right = -1;
        int maxn = INT_MIN, minn = INT_MAX;
        for (int i = 0; i < n; i++)
        {
            if (nums[i] >= maxn)
                maxn = nums[i];
            else
                right = i;

            if (minn >= nums[n - 1 - i])
                minn = nums[n - 1 - i];
            else
                left = n - 1 - i;
        }

        return right == -1 ? 0 : right - left + 1;

        // vector<int> tmp = nums;
        // sort(nums.begin(), nums.end());
        // int n = nums.size();
        // int left = INT_MAX, right = 0;
        // for(int i = 0; i < n; i++)
        // {
        //     if(nums[i] != tmp[i])
        //     {
        //         left = min(left, i);
        //         right = max(right, i);
        //     }
        // }
        // return max(0, right - left + 1);
    }
};